/**
 *************************(C) COPYRIGHT 2024 DragonBot*************************
 * @file	bsp_usb.c/h
 * @brief	虚拟串口的底层封装
 * @history
 * Date          Author         Modification
 * 2024-8-30     ZouAjie	    代码框架
 * @attention
 ==============================================================================
 虚拟串口的波特率/校验位/数据位等动态可变,取决于上位机的设定
 作为从机使用时不需要关心这些设置
 usb单个数据包(Full speed模式下)最大为64byte,超出可能会出现丢包情况
 ==============================================================================
 *************************(C) COPYRIGHT 2024 DragonBot*************************
*/
#include "bsp_usb.h"

static uint8_t *bsp_usb_rx_buffer; // 接收到的数据会被放在这里,buffer size为2048

uint8_t *USBInit(USB_Init_Config_s usb_conf)
{
    bsp_usb_rx_buffer = CDCInitRxbufferNcallback(usb_conf.tx_cbk, usb_conf.rx_cbk); // 获取接收数据指针
    // usb的接收回调函数会在这里被设置,并将数据保存在bsp_usb_rx_buffer中
    return bsp_usb_rx_buffer;
}

void USBTransmit(uint8_t *buffer, uint16_t len)
{
    CDC_Transmit_HS(buffer, len); // 发送
}
